Method and system for filtering wavetable information for wireless devices

ABSTRACT

A method for providing wavetable information to a wireless device from a content server over a wireless network, the wavetable information including a plurality of samples corresponding to a plurality of notes, comprising: in response to a request from the wireless device, receiving at a proxy server the wavetable information from the content server; filtering the wavetable information in accordance with a selection of samples contained in the request; and, transmitting the filtered wavetable information to the wireless device.

FIELD OF THE INVENTION

This invention relates to the field of wavetable information, and morespecifically, to filtering wavetable information prior to downloading toa wireless device.

BACKGROUND

Current wireless mobile communication devices include microprocessors,memory, soundcards, and run one or more software applications. Examplesof software applications used in these wireless devices includemicro-browsers, address books, email clients, and wavetable instruments.Additionally, wireless devices have access to a plurality of servicesvia the Internet. A wireless device may, for example, be used to browseweb sites on the Internet, to transmit and receive graphics, and toexecute streaming audio and/or video applications. The transfer ofInternet content to and from wireless device is typically facilitated bythe Wireless Application Protocol (“WAP”), which integrates the Internetand other networks with wireless network platforms.

A wavetable instrument is an application that digitally models a realinstrument (e.g., a piano, etc.) using information from a wavetablefile. A waveable instrument may allow a user to “play” songs bydepressing one or more keyboard keys, etc., thus providing interactiveaudio.

The content of the wavetable file includes captured audio samples of theinstrument combined with various configuration settings in order toprovide an approximation of the sound of the instrument at any note orpitch. Downloadable wavetable content is wavetable content stored in afile having a specific file format that can be downloaded to a usersystem, such as a wireless device or personal computer, for storage insystem memory or in the memory of the system's soundcard or audiosynthesizer. In addition to wavetable instruments, downloadablewavetable content can be used for applications such as music for games,web pages, and polyphonic ringtones. Downloadable wavetable content canprovide consistent sounding audio across all platforms while requiringonly a fraction of the storage resources required by other audio filessuch as MP3s. Examples of downloadable wavetable data file formatsinclude the Downloadable Sounds (“DLS”) file format from the MusicalInstruments Digital Interface (“MIDI”) Manufacturers Association and theSoundFont® file format from Creative Labs, Inc.

Thus, wavetable content may be downloaded from a network such as theInternet by a wireless device for playback through a wavetableinstrument application via the device's soundcard or audio synthesizer.

However, one shortcoming of present wireless devices and wirelesscommunications systems is their inability to efficiently download suchwavetable content to wireless devices. For example, optimizing the sizeand level of detail when creating wavetable instruments that are to bedownloaded via network communications onto a push-enabled wirelessdevice cannot be done in advance because capabilities of differentwireless devices vary and the amount of resources (e.g., flash memory,remaining carrier-enforced data limits, etc.) available is limited andconstantly changing due to the arrival of new messages, calendarappointments, etc. The need to efficiently download wavetable content isincreasing in importance with the increase in the number of applicationsbeing run on wireless devices.

A need therefore exists for an improved method and system of downloadingwavetable information to wireless devices. Accordingly, a solution thataddresses, at least in part, the above and other shortcomings isdesired.

SUMMARY

According to one aspect of the invention, there is provided a method forproviding wavetable information to a wireless device from a contentserver over a wireless network, the wavetable information including aplurality of samples corresponding to a plurality of notes, comprising:in response to a request from the wireless device, receiving at a proxyserver the wavetable information from the content server; filtering thewavetable information in accordance with a selection of samplescontained in the request; and, transmitting the filtered wavetableinformation to the wireless device.

Preferably, the method further includes the proxy server receiving arequest for metadata for the wavetable information from the wirelessdevice, the metadata including sample sizes for the samples.

Preferably, the method further includes, in response to the request formetadata, the proxy server transmitting the metadata to the wirelessdevice.

Preferably, the method further includes the proxy server receiving themetadata from the content server.

Preferably, the method further includes the proxy server extracting themetadata from the wavetable information.

Preferably, the wireless device is adapted for calculating a desirednumber of samples for the selection of samples from a maximum of thesample sizes and an amount of available memory in the wireless device.

Preferably, the wireless device is further adapted for determining theselection of samples by forming groups of notes in accordance withspacings between the notes, allocating one of the desired number ofsamples to each group, and selecting a sample for the notes in eachgroup that corresponds to a note at a midpoint of the group to reducedistortion.

According to another aspect of the invention, there is provided a methodfor providing wavetable information to a wireless device from a contentserver over a wireless network, the wavetable information including aplurality of samples corresponding to a plurality of notes, comprising:in response to a request from the wireless device, receiving at a proxyserver the wavetable information from the content server; filtering thewavetable information in accordance with an amount of available memoryin the wireless device as contained in the request; and, transmittingthe filtered wavetable information to the wireless device.

Preferably, the filtering further comprises calculating a desired numberof samples from a maximum of the sample sizes and the amount ofavailable memory in the wireless device.

Preferably, the filtering further comprises determining a selection ofsamples by forming groups of notes in accordance with spacings betweenthe notes, allocating one of the desired number of samples to eachgroup, and selecting a sample for the notes in each group thatcorresponds to a note at a midpoint of the group to reduce distortion.

According to another aspect of the invention, there is provided a methodfor filtering wavetable information in a wireless device, the wavetableinformation including a plurality of samples corresponding to aplurality of notes, comprising: calculating a desired number of samplesfrom a maximum of the sample sizes and an amount of available memory inthe wireless device; and, determining a selection of samples by forminggroups of notes in accordance with spacings between the notes,allocating one of the desired number of samples to each group, andselecting a sample for the notes in each group that corresponds to anote at a midpoint of the group to reduce distortion.

In accordance with further aspects of the present invention there isprovided an apparatus such as a proxy server system, a method foradapting this system, as well as articles of manufacture such as acomputer readable medium having program instructions recorded thereonfor practising the method of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

Further features and advantages of the embodiments of the presentinvention will become apparent from the following detailed description,taken in combination with the appended drawings, in which:

FIG. 1 is a block diagram illustrating a proxy server system adapted forimplementing an embodiment of the invention;

FIG. 2 is a block diagram illustrating a wireless communications systemadapted for implementing an embodiment of the invention;

FIG. 3 is a flow chart illustrating operations of modules within thewireless communications system and wireless device for filteringwavetable content in accordance with an embodiment of the invention;

FIG. 4 is a block diagram illustrating a wavetable instrument (e.g., apiano) containing a single keysplit region over a two octave range inaccordance with an embodiment of the invention;

FIG. 5 is a block diagram illustrating a wavetable instrument containingtwo keysplit regions over a two octave range in accordance with anembodiment of the invention;

FIG. 6 is a block diagram illustrating a wavetable instrument containingtwo keysplit regions over a two octave range in accordance with anembodiment of the invention;

FIG. 7 is a block diagram illustrating a wavetable instrument containingtwo keysplit regions having ranges that span the notes starting at the Dnote of the first octave through the A note of the second octave inaccordance with an embodiment of the invention;

FIG. 8 is a block diagram illustrating a wavetable instrument containingtwo keyplit regions having ranges that span two disjoint subsets ofnotes starting at the D note of the first octave through the A note ofthe second octave in accordance with an embodiment of the invention;

FIG. 9 is a flow chart illustrating operations of modules within thewireless communications system for determining keysplit regions andassociated samples for a wavetable instrument in accordance with anembodiment of the invention;

FIG. 10 is a flow chart illustrating operations of modules within thewireless communications system for adjusting the keysplit regions andassociated samples in accordance with an embodiment of the invention;

FIG. 11 is a block diagram illustrating an exemplary wireless deviceadapted in accordance with an embodiment of the invention; and,

FIG. 12 is a block diagram illustrating a memory of the wireless deviceof FIG. 11 in accordance with an embodiment of the invention.

It will be noted that throughout the appended drawings, like featuresare identified by like reference numerals.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following detailed description of the embodiments of the presentinvention does not limit the implementation of the invention to anyparticular computer programming language. The present invention may beimplemented in any computer programming language provided that theoperating system (“OS”) provides the facilities that may support therequirements of the present invention. A preferred embodiment isimplemented in the JAVAT™ computer programming language (or othercomputer programming languages such as C or C++). (JAVA and allJAVA-based trademarks are the trademarks of Sun MicrosystemsCorporation.) Any limitations presented would be a result of aparticular type of operating system or computer programming language andwould not be a limitation of the present invention.

The present invention is directed to resource availability problems suchas may be encountered when downloading wavetable information onto awireless device for use with audio playback applications. Wavetable datafiles are generally considered to be compact when compared toalternative audio formats. However, as these files are typically createdand used on desktop computers they are often too large or detailed formost mobile wireless devices. For example, the files may contain compactdisc (“CD”) quality samples, while the wireless device hardware may notbe capable of CD quality audio output. The size and detail of thesamples in this case would be wasteful.

Embodiments of the invention provide a method for a mobile wirelessdevice to request a remote proxy server to download and filter outsamples from a wavetable data file available from a content server.Requesting a proxy server to perform the filtering is a more economicaluse of the wireless device's airtime. The wavetable data filetransferred from the proxy to the device in accordance with theinvention is typically smaller than if that same wavetable data file wasdownloaded directly from the content server.

The filtering is performed based on information regarding which samplesshould be kept in the wavetable instrument (the rest are filtered out).This information is calculated by the wireless device or client based onvariables such as the desired maximum size of a resulting wavetableinstrument and which MIDI instructions will be used by the wirelessdevice to play the wavetable instrument. Knowing which MIDI data will beused to drive the instrument allows for efficient filtering for theinstrument in order to retain as much audio quality as possible.

In addition, the download process can be automated. For example, if auser downloads a game, the game application can follow up byautomatically downloading wavetable content to be used for the game'sbackground music upon the first run of the application. Furthermore, thedownload process can be interactive. For example, a user may wish todownload a wavetable instrument that will be used to generate the soundfor a specific set of MIDI/SP-MIDI ringtones. If the wavetable data fileto be downloaded is one specified by a user, very little interaction isrequired in the download process. The user specifies the remote locationof the wavetable data file desired for download and a set of MIDI fileswhich will be used to play the wavetable instrument.

Advantageously, the present invention provides an automated method ofreducing the size of a wavetable data file at runtime without manualediting. Currently, if a user wishes to reduce the size of a wavetablefile, the user would have to download the entire file and manually editthe resource file using editing software. Not only is downloading theentire file before local editing uneconomical, it is not a trivial taskas it requires knowledge of the specific file format and how wavetablesoperate.

FIG. 1 is a block diagram illustrating a proxy server system 100 adaptedfor implementing an embodiment of the invention. The proxy server system100 includes an input device 110, a central processing unit or CPU 120,memory 130, a display 140, and an interface 150. The input device 110may include a keyboard, mouse, trackball, remote control, or similardevice. The CPU 120 may include dedicated coprocessors and memorydevices. The memory 130 may include RAM, ROM, or disk devices. Thedisplay 140 may include a computer screen, terminal device, or ahardcopy producing output device such as a printer or plotter. And, theinterface 150 may include a network connection including an Internetconnection. The proxy server 100 is adapted for filtering anddownloading wavetable information to wireless devices 210 over awireless network 220 (see FIG. 2).

The proxy server system 100 may be a server system or a personalcomputer (“PC”) system. The CPU 120 of the system 100 is operativelycoupled to memory 130 which stores an operating system (not shown), suchas IBM Corporation's OS/2™, UNIX, etc., for general management of thesystem 100. The interface 150 may be used for communicating to externaldata processing systems 230, 250 through a network 240 (see FIG. 2),such as the Internet. Examples of suitable platforms for the proxyserver system 100 include iSeries™ servers and ThinkCentre™ personalcomputers available from IBM Corporation. The system 100 may includeapplication server software (not shown), such as WebLogic® Serveravailable from BEA Systems, Inc., for developing and managingdistributed applications.

The proxy server system 100 may include a database system 160 forstoring and accessing programming information. The database system 160may include a database management system (“DBMS”) and a database and isstored in the memory 130 of the proxy server system 100.

The proxy server system 100 includes computer executable programmedinstructions for directing the system 100 to implement the embodimentsof the present invention. The programmed instructions may be embodied inone or more software modules 170 resident in the memory 130 of the proxyserver system 100. Alternatively, the programmed instructions may beembodied on a computer readable medium (such as a CD disk or floppydisk) which may be used for transporting the programmed instructions tothe memory 130 of the proxy server system 100. Alternatively, theprogrammed instructions may be embedded in a computer-readable,signal-bearing medium that is uploaded to a network by a vendor orsupplier of the programmed instructions, and this signal-bearing mediummay be downloaded through the interface 150 to the proxy server system100 from the network by end users or potential buyers.

The CPU 120 of the system 100 is typically coupled to one or moredevices 110 for receiving user commands or queries and for displayingthe results of these commands or queries to the user on a display 140.As mentioned, the memory 130 may include a variety of storage devicesincluding internal memory and external mass storage typically arrangedin a hierarchy of storage as understood to those skilled in the art.

A user may interact with the proxy server system 100 and its softwaremodules 170 using a graphical user interface (“GUI”) 180. The GUI 180may be web-based and may be used for monitoring, managing, and accessingthe proxy server system 100. GUIs are supported by common operatingsystems and provide a display format which enables a user to choosecommands, execute application programs, manage computer files, andperform other functions by selecting pictorial representations known asicons, or items from a menu through use of an input or pointing devicesuch as a mouse 110. In general, a GUI is used to convey information toand receive commands from users and generally includes a variety of GUIobjects or controls, including icons, toolbars, drop-down menus, text,dialog boxes, buttons, and the like. A user typically interacts with aGUI 180 presented on a display 140 by using an input or pointing device(e.g., a mouse) 110 to position a pointer or cursor 190 over an object191 and by “clicking” on the object 191.

Typically, a GUI based system presents application, system status, andother information to the user in “windows” appearing on the display 140.A window 192 is a more or less rectangular area within the display 140in which a user may view an application or a document. Such a window 192may be open, closed, displayed full screen, reduced to an icon,increased or reduced in size, or moved to different areas of the display140. Multiple windows may be displayed simultaneously, such as: windowsincluded within other windows, windows overlapping other windows, orwindows tiled within the display area.

FIG. 2 is a block diagram illustrating a wireless communications system200 adapted for implementing an embodiment of the invention. Thewireless communications system 200 includes a wireless device 210 incommunication with the proxy server system 100 over a wireless network220. The wireless network 220 is coupled to a wireless network gateway230 which provides an interface to a wide area network (“WAN”) 240 towhich the proxy server 100 is coupled. The proxy server 100 is also incommunication with a content server system 250 over the WAN 240.

FIG. 11 is a block diagram illustrating an exemplary wireless device 210adapted in accordance with an embodiment of the invention. The wirelessdevice 210 is a two-way communication device having at least voice andadvanced data communication capabilities, including the capability tocommunicate with other computer systems. Depending on the functionalityprovided by device 210, it may be referred to as a data messagingdevice, a two-way pager, a cellular telephone with data messagingcapabilities, a wireless Internet appliance, or a data communicationdevice (with or without telephony capabilities). Device 210 maycommunicate with any one of a plurality of fixed transceiver stations220 within its geographic coverage area.

Device 210 will normally incorporate a communication subsystem 111,which includes a RF receiver, a RF transmitter, and associatedcomponents, such as one or more (preferably embedded or internal)antenna elements and, local oscillators (“LOs”), and a processing modulesuch as a digital signal processor (“DSP”) (all not shown). As will beapparent to those skilled in field of communications, particular designof communication subsystem 111 depends on the communication network 220in which device 210 is intended to operate.

Network access is associated with a subscriber or user of device 210 andtherefore device 210 requires a Subscriber Identity Module (or “SIM”card) 162 to be inserted in a SIM IF 164 in order to operate in thenetwork. Device 210 is a battery-powered device so it also includes abattery IF 154 for receiving one or more rechargeable batteries 156.Such a battery 156 provides electrical power to most if not allelectrical circuitry in device 210, and battery IF 154 provides for amechanical and electrical connection for it. The battery IF 154 iscoupled to a regulator (not shown) which provides power V+ to all of thecircuitry.

Device 210 includes a microprocessor 138 which controls overalloperation of device 210. Communication functions, including at leastdata and voice communications, are performed through communicationsubsystem 111. Microprocessor 138 also interacts with additional devicesubsystems such as a display 122, a flash memory 124 or other persistentstore, a random access memory (“RAM”) 126, auxiliary input/output(“I/O”) subsystems 128, a serial port 131, a keyboard 132, a speaker134, a microphone 136, a short-range communications subsystem 141, andany other device subsystems generally designated at 142. Some of thesubsystems shown in FIG. 1 perform communication-related functions,whereas other subsystems may provide “resident” or on-device functions.Notably, some subsystems, such as keyboard 132 and display 122, forexample, may be used for both communication-related functions, such asentering a text message for transmission over a communication network,and device-resident functions such as a calculator or task list.Operating system software used by microprocessor 138 is preferablystored in a persistent store such as flash memory 124, which mayalternatively be a read-only memory (“ROM”) or similar storage element(not shown). Those skilled in the art will appreciate that the operatingsystem, specific device applications, or parts thereof, may betemporarily loaded into a volatile store such as RAM 126.

Microprocessor 138, in addition to its operating system functions,preferably enables execution of software applications on device 210. Apredetermined set of applications which control basic device operations,including at least data and voice communication applications, willnormally be installed on device 210 during its manufacture. A preferredapplication that may be loaded onto device 210 may be a personalinformation manager (“PIM”) application having the ability to organizeand manage data items relating to the user such as, but not limited to,instant messaging (“IM”), e-mail, calendar events, voice mails,appointments, and task items. Naturally, one or more memory stores areavailable on device 210 and SIM 162 to facilitate storage of PIM dataitems and other information.

The PIM application preferably has the ability to send and receive dataitems via the wireless network 220. In a preferred embodiment, PIM dataitems are seamlessly integrated, synchronized, and updated via thewireless network, with the mobile station user's corresponding dataitems stored and/or associated with a host computer system therebycreating a mirrored host computer on device 210 with respect to suchitems. This is especially advantageous where the host computer system isthe mobile station user's office computer system. Additionalapplications may also be loaded onto device 210 through network 220, anauxiliary I/O subsystem 128, serial port 131, short-range communicationssubsystem 141, or any other suitable subsystem 142, and installed by auser in RAM 126 or preferably a non-volatile store (not shown) forexecution by microprocessor 138. Such flexibility in applicationinstallation increases the functionality of device 210 and may provideenhanced on-device functions, communication-related functions, or both.For example, secure communication applications may enable electroniccommerce functions and other such financial transactions to be performedusing device 210.

In a data communication mode, a received signal such as a text message,an e-mail message, or web page download will be processed bycommunication subsystem 111 and input to microprocessor 138.Microprocessor 138 will preferably further process the signal for outputto display 122 and/or to auxiliary I/O device 128. A user of device 210may also compose data items, such as e-mail messages, for example, usingkeyboard 132 in conjunction with display 122 and possibly auxiliary I/Odevice 128. Keyboard 132 is preferably a complete alphanumeric keyboardand/or telephone-type keypad. These composed items may be transmittedover a communication network through communication subsystem 111 orshort range communication subsystem 141.

For voice communications, the overall operation of device 210 issubstantially similar, except that the received signals would be outputto speaker 134 and signals for transmission would be generated bymicrophone 136. Alternative voice or audio I/O subsystems, such as avoice message recording subsystem, may also be implemented on device210. Although voice or audio signal output is preferably accomplishedprimarily through speaker 134, display 122 may also be used to providean indication of the identity of a calling party, duration of a voicecall, or other voice call related information, as some examples.

Serial port 131 in FIG. 11 is normally implemented in a personal digitalassistant (“PDA”)-type communication device for which synchronizationwith a user's desktop computer is a desirable, albeit optional,component. Serial port 131 enables a user to set preferences through anexternal device or software application and extends the capabilities ofdevice 210 by providing for information or software downloads to device210 other than through a wireless communication network. The alternatedownload path may, for example, be used to load an encryption key ontodevice 210 through a direct and thus reliable and trusted connection tothereby provide secure device communication.

Short-range communications subsystem 141 of FIG. 11 is an additionaloptional component which provides for communication between device 210and different systems or devices, which need not necessarily be similardevices. For example, subsystem 141 may include an infrared device andassociated circuits and components, or a Bluetooth™ communication moduleto provide for communication with similarly-enabled systems and devices.Bluetooth™ is a registered trademark of Bluetooth SIG, Inc.

FIG. 12 is a block diagram illustrating a memory 201 of the wirelessdevice 210 of FIG. 11 in accordance with an embodiment of the invention.The memory 201 has various software components for controlling device210. Memory 201 may be flash memory 124, RAM 126 or a ROM (not shown),for example. In accordance with an embodiment of the invention, device210 is intended to be a multi-tasking wireless communications deviceconfigured for sending and receiving data items and for making andreceiving voice calls. To provide a user-friendly environment to controlthe operation of device 210, an operating system (“O/S”) 202 resident ondevice 210 provides a basic set of operations for supporting variousapplications typically operable through a graphical user interface(“GUI”) 204. For example, O/S 202 provides basic input/output systemfeatures to obtain input from Auxiliary I/O 108, keyboard 132 and thelike and for facilitating output to the user. In accordance with anembodiment of the invention, there are provided software modules 206 forwavetable instrument applications as will be described below. Though notshown, one or more applications for managing communications or providingpersonal digital assistant like functions may also be included.

Thus, the wireless device 210 includes computer executable programmedinstructions for directing the device 210 to implement the embodimentsof the present invention. The programmed instructions may be embodied inone or more software modules 206 resident in the memory 201 of thewireless device 210. Alternatively, the programmed instructions may beembodied on a computer program product having a non-transitory computerreadable medium (such as a CD disk or floppy disk) which may be used fortransporting the programmed instructions to the memory of the wirelessdevice 210. Alternatively, the programmed instructions may be embeddedin a computer-readable, signal-bearing medium that is uploaded to anetwork by a vendor or supplier of the programmed instructions, and thissignal-bearing medium may be downloaded through an interface 111, 131,141 to the wireless device 210 from the network by end users orpotential buyers.

The wireless device 210 has software modules for running client softwarefor downloading wavetable data files. This software may be a standaloneapplication, browser plugin, etc. Once the client determines whichsamples should be kept in a wavetable instrument based on the desiredsize of the wavetable data file, and which MIDI data will be used toplay it, this information is sent to the proxy server 100 as a requestto have the wavetable data file filtered and returned to the wirelessdevice 210.

The proxy server 100 runs wavetable data file filtering software. Theproxy server 100 handles requests from wireless clients 210, downloadswavetable data files from the content server 250, and filters thedownloaded wavetable data files locally. Typically, the proxy server 100does not face the same memory and bandwidth constraints that the mobiledevices 210 do.

The content server 250 is a remote machine that provides access topre-created wavetable data files.

FIG. 3 includes flow charts illustrating operations 300, 400 of moduleswithin a wireless device and proxy server system 210, 100, respectively,for downloading filtered wavetable content to the wireless devices 210from the proxy server system 210 in accordance with an embodiment of theinvention.

With respect to wireless device/client software modules, at step 310,the operations 300 start. A query message 301 is sent from the wirelessdevice 210 to the proxy server 100 requesting a description of therequired wavetable data file. In response, a description message 302 isreceived from the proxy server 100. This description, or metadata,typically contains information pertaining to the instrument(s) in thefile and details with respect to the size, notes, etc., of the samplesin the wavetable instrument(s).

At step 320, if there is more than one wavetable instrument in the datafile, then a choice is made as to which instruments in the wavetabledata file should be contained in the filtered data file.

At step 330, the “instrument slot(s)” are chosen for the wavetableinstrument(s) that will be loaded into the wireless device's hardware orsoftware synthesizer's memory. These correspond to a MIDI instrumentprogram number also referred to as a “patch”.

At step 340, a determination is made as to which MIDI files will be usedin playing the wavetable instrument. This choice may be madeautomatically or by a user. These files are parsed to determine whichnotes will be triggered on which program numbers. If it is determinedthat the instruments that will potentially be loaded into any of theinstrument slots(s) chosen at step 330 will not be triggered by the MIDIfiles, then this event may be reported to the calling application oruser.

At step 350, using the information regarding the desired maximum size ofeach wavetable instrument, and the previously queried metadata, adetermination is made as to how many samples each wavetable instrumentwill contain. This is performed by using the size of the largest samplein the instrument and calculating how many samples of that size can beincluded such that they are below the desired maximum size. The resultis a good estimate, as in most cases all the samples within a sourcewavetable instrument will be approximately the same size. If there aresignificant differences in the sizes of samples contained in the sourcewavetable instrument, performing the estimate as if every sample is aslarge as the largest sample ensures that no underestimate of thecombined size of the samples that will be chosen in the selectionprocess of step 360. Underestimating could result in downloading afiltered wavetable instrument that is larger than the desired maximum.

At step 360, using the number of desired samples for each wavetableinstrument, and the set of MIDI notes that will be used to play theinstrument (see step 330 above), a determination is made as to whichsamples are to be filtered out. The filtering algorithm is described inmore detail below.

At step 370, information regarding which instruments the returnedwavetable data file is to contain and which samples these instrumentsare to include is sent to the proxy server 100 as a request to filterthe wavetable data file message 303.

At step 380, operations 300 end with the return of filtered wavetabledata 304 from the proxy server 100.

With respect to the proxy server software modules, at step 410, theoperations 400 start. A request 301 is received from the wireless devicefor metadata.

At step 420, metadata is downloaded to the proxy server 100 from thecontent server 250. If there is no metadata to download, then thewavetable data file is downloaded to the proxy server 100 from thecontent server 250 and the metadata is extracted from it.

At step 430, the metadata 302 is sent to the client 210.

At step 440, a request 303 to filter a wavetable data file is receivedby the proxy server 100 from the client wireless device 210.

At step 450, the wavetable data file obtained is filtered, if necessary,and the resulting filtered file 304 is sent to the client 210. As willbe described below, how this is accomplished depends on the wavetabledata file format that is to be filtered.

Two of the components of the Musical Instrument Digital Interface(“MIDI”) are the communications protocol (language) and a distributionformat called Standard MIDI Files. The MIDI protocol is an entire musicdescription language in binary form. Each word describing an action ofmusical performance is assigned a specific binary code. To sound a notein the MIDI protocol a “Note On” message is sent followed by an assigned“Velocity” which determines how loud the note will play. Other MIDImessages include selecting which instrument to play, mixing and panningsounds, and controlling various aspects of electronic musicalinstruments.

When MIDI messages are stored on disk, they are commonly saved in theStandard MIDI file format, which is slightly different from the nativeMIDI protocol, because the events are also time-stamped for playback inthe proper sequence. Music delivered by MIDI files is the most commonuse of MIDI today. MIDI is the primary source of music in many popularPC games and CD-ROM entertainment titles, and thousands of MIDI filesare available on the Internet for recreational use. Just about everypersonal computer is now equipped to play Standard MIDI files.

One reason for the popularity of MIDI files is that, unlike digitalaudio files (e.g., .wav, .aiff, etc.) or even CDs or cassettes, a MIDIfile does not need to capture and store actual sounds. Instead, the MIDIfile can be just a list of events which describe the specific steps thata soundcard or other playback device must take to generate certainsounds. This way, MIDI files are very much smaller than digital audiofiles, and the events are also editable, allowing the music to berearranged, edited, even composed interactively, if desired.

The Downloadable Sounds (“DLS”) format allows MIDI files to be combinedwith standardized samples of musical instruments, sound effects, or evendialogue, to recreate a copy of the sound intended by the composer. MIDIfiles with DLS are one solution for composers who want the predictableplayback of digital audio, but also need the compactness and/orinteractivity of Standard MIDI files for delivering their music.

Originally targeted for CD-ROM and Internet entertainment applications,DLS provides a means for game developers and composers to add their owncustom sounds to the General MIDI (“GM”) sound set (e.g., a list ofsound names or “patches”) stored in a sound card's ROM. DLS-compatibledevices generally download these custom sounds from card, disk or CD-ROMinto system RAM, allowing MIDI music to be freely augmented with newinstrument sounds, dialog or special effects thus providing a universalinteractive playback experience, along with an enhanced palette ofsounds. At the same time, it enables wavetable synthesizers in computersound cards to deliver improved audio at no additional cost. Thecombination of MIDI messages controlling small sound samples, as opposedto the use of streaming digitized audio, makes DLS especiallyappropriate for interactive multimedia applications, and for puttingsound and music on web pages where fast downloading, seamless playback,and user interaction are critical.

The DLS file format generally follows the standard Microsoft® RIFFlayout (with a form type of “DLS”), utilizing chunks and sub-chunks andincorporating standard WAVE files. The DLS file format is used to storeboth the digital sound data and articulation parameters needed to createone or more instruments. An instrument contains “regions” which point toWAVE files or samples also embedded in the DLS file. Each regionspecifies a MIDI note and velocity range which will trigger thecorresponding sound and also contains articulation information such asenvelopes and loop points. Articulation information can be specified foreach individual region or for the entire instrument. The flexible filestructure utilized by DLS means that a single sample may serve asdifferent regions within different instruments. For example, a givensample can serve as region “1 b” for instrument “1” while at the sametime acting as region “2 a” for instrument “2.”

With respect to how the samples contained in a wavetable instrumentaffect the quality of audio playback, note that when creating wavetableinstruments any transposing, or pitch shifting, used to reproduce tonesfor which there is no corresponding sample in the wavetable instrument'ssample set will introduce some distortion of the timbres. Just how muchdistortion is determined by the number of samples included in thewavetable instrument, as well as the notes corresponding to thosesamples.

Multiple samples are included in a wavetable instrument so that theentire range of playable notes can be subdivided into subranges, knownas “keysplits”. Each keysplit region has an assigned sample which can bepitch shifted to reproduce all notes within the region. Having multiplekeysplit regions and samples helps limit distortion as the pitch shiftsrequired are not as large. That is, pitch shifting of a particularsample is limited to a specific range of notes. As an example of how thenumber of samples affects distortion, consider FIG. 4.

FIG. 4 is a block diagram illustrating a wavetable instrument 460 (e.g.,a piano) containing a single keysplit region 470 over a two octave range480 in accordance with an embodiment of the invention. The sample 490for the keysplit region 470 is of a sound that has the same pitch as theC note of the first octave. The further away a particular MIDI note X isfrom the C note of the sample 490, the more pitch shifting that will berequired to play note X, and thus the more distorted it will be.

FIG. 5 is a block diagram illustrating a wavetable instrument 500containing two keysplit regions 510, 520 over a two octave range 530,540 in accordance with an embodiment of the invention. The sample 550for region 1 510 is of a sound that has the same pitch as the C note ofthe first octave, and the sample 560 for region 2 520 is of a sound thathas the same pitch as the D note of the first octave. Since there ismore than one sample that can be shifted, the sample whose note isclosest to the MIDI note X that is to be played can be pitch shifted,thus reducing the distortion when playing certain notes. That is, thenotes starting from D in the first octave and above will all be lessdistorted when played on the wavetable instrument 500 of FIG. 5 thanwhen played on the wavetable instrument 460 of FIG. 4.

As an example of how the notes of the samples affect distortion, comparethe wavetable instrument illustrated in FIG. 5 with the one illustratedin FIG. 6.

FIG. 6 is a block diagram illustrating a wavetable instrument 600containing two keysplit regions 610, 620 over a two octave range 630,640 in accordance with an embodiment of the invention. In FIG. 6, thekeysplit regions 610, 620 and samples 650, 660 are distributed evenlyover the range 630, 640. The wavetable instrument 600 of FIG. 6 isarranged so that the amount of pitch shifting required in playing the Cnote of the second octave is reduced. In fact, the largest pitch shiftrequired to play any of the notes is 6 semitones compared to a largestpitch shift of 21 semitones for the wavetable instrument 500 of FIG. 5.

Thus, to build a wavetable instrument for playing any note, a gooddistribution of keysplit regions with samples includes an evendistribution. However, if it is known that a wavetable instrument willbe used to play a specific set of notes, it can be further optimized. Inthe following, a method for determining an optimized set of keysplitsand samples for playback of a particular set of notes and a method ofadapting this optimized set to fit the content contained in apre-existing wavetable instrument will be described. These methods allowfor the filtering out of the M samples that are least helpful withrespect to playback quality.

In accordance with an embodiment of the invention, a method fordetermining which samples to discard in order to reduce the size ofwavetable instruments will now be described. If a choice is made toreduce the size of the wavetable instrument by discarding some of thesamples it contains, then playback quality may also be reduced because,as mentioned above, having more samples will result in less distortedplayback. Since this reduces the effectiveness of one of the methodsused to reduce distortion, close attention must be paid to the othermethod of reducing distortion as described above (i.e., the notes of thesamples or the positioning of the samples throughout the note range)when choosing which samples to discard.

Having a wavetable instrument, a set of notes that will be played usingthe wavetable instrument, and knowing the number N of samples to becontained in the resulting wavetable instrument, creating an optimalbalance of size and detail includes the following steps. First, adetermination is made as to the preferred N keysplit regions andassociated preferred samples that the resulting wavetable instrumentshould contain in order to have the highest quality playback of the setof notes that will be used to drive the wavetable instrument. Bypreferred samples it is meant the samples that would be desired if asample of every note was available to choose from. Second, an adjustmentis made to the preferred model to fit the samples contained in thewavetable instrument to be filtered. Typically, the available sampleswill not contain a sample for every corresponding MIDI note.

With respect to the first step of determining the preferred N keysplitregions and associated preferred samples the resulting wavetableinstrument should contain, excluding the trivial cases where N=1 (i.e.,the resulting wavetable instrument would contain one keysplit regionthat spans the lowest of the MIDI notes through the highest, with thepreferred sample being at the midpoint note of the range) and where N>=#of MIDI notes that will be played using the wavetable instrument (i.e.,the resulting wavetable instrument would have a keysplit region andcorresponding preferred sample for every note), the method ofdetermining the preferred splits and samples includes the followingsteps.

First, the largest gaps between consecutive MIDI notes is found. Forexample, if the list of notes contains MIDI note 60 (middle C) and MIDInote 63 (D#) without having notes 61 or 62 in the list, then the gapbetween them is of magnitude 2. By finding the largest gaps, it can bedetermined whether or not the set of MIDI notes should be subdividedinto subsets, up to a maximum of N subsets, where each subset would bemade its own keysplit region and would have its own sample, or whetherevenly divided keysplits and evenly distributed samples should becreated.

A gap is sufficiently large so that it should be subdivided when themagnitude of the gap is greater than half the distance spanned by therange of MIDI notes to the left of the gap, or greater than half thedistance spanned by the range of MIDI notes to the right of the gap.This is so because in these cases, dividing and isolating into subsetsand assigning samples to each subset would result in the MIDI notesbeing closer to a sample than they would be had a even distribution beenchosen. For example, compare the wavetable instruments shown in FIGS. 7and 8.

FIG. 7 is a block diagram illustrating a wavetable instrument 700containing two keysplit regions 710, 720 having ranges 730, 740 thatspan the notes starting at the D note of the first octave through the Anote of the second octave in accordance with an embodiment of theinvention. The keysplit regions 710, 720 and samples 750, 760 aredistributed evenly over the ranges 730, 740. FIG. 8 is a block diagramillustrating a wavetable instrument 800 containing two keyplit regions810, 820 having ranges 830, 840 that span two disjoint subsets of notesstarting at the D note of the first octave through the A note of thesecond octave in accordance with an embodiment of the invention. Thegrey shaded keys 770, 870 represent notes that are contained in thedesired list of MIDI notes.

The N largest gaps can be checked, and if each gap is large enough, theMIDI notes to the left of the gap can be isolated from those to theright of the gap. This will in essence provide a method to createkeysplit regions. That is, those to the left of the gap will becontained in their own keysplit region, as will those to the right ofthe gap. If at each iteration it is determined that the largest gap iswithin a keysplit region created in one of the previous iterations, thatkeysplit region can also be subdivided into two new keysplit regions. Atthis point, specific samples for these keysplit regions are not beingchosen. Rather, a sample is being granted to each region. This basicallymeans that the value of a “pending sample count” variable for eachregion is being set to 1. This is done because, in the following step,any remaining samples will be granted to some of the regions, and howmany samples a region has will affect which samples are chosen.

If N is greater than the number of keysplit regions created in theprevious step, then it will be repeatedly determined which of thekeysplit regions should be granted an additional sample (i.e., a“pending sample count” variable for that region will be incremented)until there are no more samples left to grant. At each iteration, asample is granted to the region with the largest distance between anendpoint note and the nearest sample note if the region's “pendingsample count” number of samples have already been distributed evenly.

Once the granting of all of the samples is completed, the regions withmore than one sample granted to them will be subdivided evenly. Once thefinal set of keysplit regions is obtained, the preferred sample note foreach region will be the region's midpoint note.

In addition, an initialization phase can be used to perform tasks suchas arranging the input MIDI data and source wavetable data into datastructures that can be used to access information quickly. For example,a data structure can be used to maintain information regarding thedistance between consecutive MIDI notes (gaps).

Also, in the event of there being two or more gaps of the samemagnitude, a tie breaker algorithm may be used to determine which ofthose gaps is the one to be processed next. An example may be to assigna greater priority to the gap that is contained in the region that hasthe most notes.

With respect to the second step of adjusting the preferred model to fitthe samples contained in a wavetable instrument to be filtered, havingknowledge of what samples are in the source wavetable instrument to befiltered, the preferred model calculated using the method describedabove can be adjusted to fit the samples available in the sourcewavetable instrument. This is performed by realigning the preferredkeysplit regions and samples in order to derive a wavetable instrumentthat is the best quality given the source wavetable content that isavailable. Once the preferred model is adjusted, so that the finalizedkeysplit regions and samples are selected, the samples that areremaining are implicitly filtered out. The method of adjusting thepreferred model involves the following steps.

First, the list of samples to be chosen from is narrowed. It can beknown ahead of time whether some samples will never be chosen in thesample selection process. This is particularly true for samples whosenote values are significantly less than the lowest note in the range ofMIDI notes that will be used to play the wavetable instrument, and thosewhose note values are significantly higher. Choosing which samplesshould be included in the selection process can be performed as follows.If there are no samples within the MIDI note range, there are at mosttwo samples that will be selected from, namely, the closest sample tothe left of the range (if any) and the closest sample to the right (ifany). If there are samples within the MIDI note range, it may still bedesirable to include with them some samples from outside of the range inthe selection process. To find out which of those outside the rangeshould be included, the left most and right most samples within therange are found. The distance from the left end of the range to theleftmost sample within the range, minus one, is how far to the left ofthe note range that will be included in the search for samples. The sameoperation is performed with respect to the right side.

Second, new samples for each of the preferred keysplit regions areselected. This is performed as follows. Until all regions have beenprocessed, find the region that will have to be skewed/adjusted themost. That is, the region that has the longest distance between thepreferred sample and the closest of the two nearest samples to the rightand the left of the preferred sample. Then, set the sample for thisrange to be the closer of the two samples on either side. If one end ofthe range is closer to the sample that was not chosen than to the samplethat was chosen, mark the region as a potential “split-region”. That is,add the region to a split-region list. After all of the regions havebeen adjusted, it will then be determined from the list of split-regionswhether any of them should be split into their own region.

Third, if a split of some regions is to be performed, then an associatedjoin will have to be performed as well. If two regions have already beenadjusted and have chosen the same sample, then that can be considered asa join. If a join is already in hand, the worst of the split-regions canbe split, the worst being the one that has an endnote that is furthestaway from the note of the chosen sample.

If no joins are in hand, a different operation is required. The effectof the split has to be evaluated to determine whether it is wise to makethe split. This is performed by determining how far away the end of therange which is closest to the sample “x” that was chosen previously isfrom the sample “y” of the next region beside it. That is, the regionthat will be potentially joined. If the distance is greater than orequal to the distance between the other end of the range and the sample“z” that is closest to that end, then the split is not required. If itis less than that distance, that endnote and its adjacent notes whosedistance is also less can join the region for sample “y”. The rest canjoin the region for sample “z”.

Thus, in accordance with embodiments of the invention, before a wirelessdevice client 210 downloads a wavetable instrument contained in a datafile residing on a content server 250, a limit can be determined for howlarge the wavetable instrument is to be in order to fit the resourcesavailable. Or, a user can choose to set a predefined limit. Afterrequesting metadata regarding the contents of the wavetable data file,using the limit, a determination can be made as to the maximum number ofsamples N contained in the wavetable instrument that can be downloadedto the wireless device while still having a combined size that is underthe limit. Given this information, and having a set of MIDI files thatwill be used as instructions to play the wavetable instrument (i.e., theset of MIDI files can be specified by a user or application), it can bedetermined which N sampled notes contained in the wavetable instrumentare the best ones to keep in the wavetable instrument when it isdownloaded. By best, it is meant that they are the best N samples that,when used for playback of those particular MIDI instructions, willresult in the highest quality or least distorted playback. Theinformation regarding which samples are desired for the wavetableinstrument are sent to a proxy server 100 as a request to filter out anyextra samples from the wavetable instrument other than the desiredsamples. The proxy server 100 downloads the unmodified wavetable datafile from the content server 250, filters it locally, and then returnsthe resulting file to the wireless device client 210.

Using the same algorithm to choose the best samples, it can also bedetermined which would be the M best samples to delete from an alreadydownloaded wavetable instrument. This is advantageous when more flash isrequired in the wireless device 210 for incoming messages, calendarappointments, etc.

The above described methods may be summarized with the aid offlowcharts. FIG. 9 is a flow chart illustrating operations 900 ofmodules within the wireless communications system for determiningkeysplit regions and associated samples for a wavetable instrument inaccordance with an embodiment of the invention.

At step 1-1, the operations 900 start. A determination is made as towhether the wavetable to be downloaded has more than one sample.

At step 1-2, if the wavetable does not have more than one sample then nofiltering is required and the operations 900 end.

At step 1-3, if the wavetable does have more than one sample, then aninitialization operation (see above) is performed.

At step 1-5, a determination is made as to whether the number of desiredsamples is equal to one.

At set 1-4, if the number of desired samples does equal one, then thepreferred wavetable has one region spanning the MIDI note range with thepreferred sample being at the midpoint of the range. Operations thenproceed to step 2.

At step 1-6, if the number of desired samples is not equal to one, thena determination is made as to whether the number of desired samples isgreater than or equal to the number of MIDI notes.

At step 1-7, if the number of desired samples is greater than or equalto the number of MIDI notes, then the preferred wavetable has a keysplitregion and corresponding preferred sample note for every MIDI note.Operations then proceed to step 2.

At step 1-8, if the number of desired samples is less than the number ofMIDI notes, then a determination is made as to whether all the sampleshave been granted.

At step 1-9, if all the samples have been granted, then the preferredregions are committed and operations proceed to step 2.

At step 1-10, if all the samples have not been granted, then adetermination is made as to whether all the gaps have been processed. Ifall the gaps have not been processed, then the largest unprocessed gapis processed and operations proceed to step 1-12.

At step 1-11, if all the gaps have been processed then the sample isgranted to the region with the largest distance between an endpoint noteand the nearest sample note if the region's “pending sample count”number of samples were to have been distributed evenly.

At step 1-12, a determination is made as to whether there is a tie withrespect to the largest gap. If there is no tie, operations proceed tostep 1-14.

At step 1-13, if there is a tie with respect to the largest gap, atiebreaker mechanism (see above) is used to choose which gap should beprocessed next.

At step 1-14, a determination is made as to whether the gap is largeenough to be subdivided. If not, operations return to step 1-10.

At step 1-15, if the gap is large enough to be subdivided, then adetermination is made as to whether the gap is contained in a regioncreated in a previous step.

At step 1-16, if the gap is contained in a region created in a previousstep, then the container region is subdivided and operations return tostep 1-8.

At step 1-17, if the gap is not contained in a region created in aprevious step, then one keysplit region is created spanning all notes tothe left of the gap and one keysplit region is created spanning allnotes to the right of the gap. Operations then return to step 1-8.

At step 2, operations end when the preferred model is adjusted to fitsamples contained in the wavetable to be filtered (see FIG. 10).

FIG. 10 is a flow chart illustrating operations 1000 of modules withinthe wireless communications system for adjusting the keysplit regionsand associated samples in accordance with an embodiment of theinvention.

At step 2-1, the operations 1000 start. The list of samples contained inthe wavetable to be chosen from is narrowed.

At step 2-2, a determination is made as to whether all regions have beenprocessed. If all regions have not been processed, the region that hasto be skewed the most is processed and operations proceed to step 2-3.If all regions have been processed, then operations proceed to step 2-8described below.

At step 2-3, a sample is chosen for the region that has to be skewed themost.

At step 2-4, a determination is made as to whether a sample chosen forthe present region has been chosen for another region. If not, thenoperations proceed to step 2-6.

At step 2-5, if a sample chosen for the present region has been chosenfor another region, then the “joins in-hand” count is incremented andoperations proceed to step 2-6.

At step 2-6, a determination is made as to whether one end of the regionrange is closer to a sample that was not chosen. If not, then operationsreturn to step 2-2.

At step 2-7, if one end of the region range is closer to a sample thatwas not chosen, then the region is marked as a “split-region” andoperations return to step 2-2.

At step 2-8, a determination is made as to whether all “split-regions”have been processed. If not, the worst of the unprocessed split regionsis processed and operations proceed to step 2-10.

At step 2-9, if all the “split-regions” have been processed then thefiltering process is complete and the operations end.

At step 2-10, a determination is made as to whether there are any “joinsin-hand” remaining. If so, then operations proceed to step 2-11. If not,then operations proceed to step 2-12.

At step 2-11, a determination is made as to whether the unchosen samplethat is closest to part of the region range is already the chosen sampleof another range. If not, then operations proceed to step 2-13. If so,then operations proceed to step 2-12.

At step 2-12, a determination is made as to whether it is worthwhile tohave part of the range moved to a different existing region. If so, thenoperations proceed to step 2-14. If not, then operations return to step2-8.

At step 2-13, proceeding from step 2-11, the region is split so that thepart of the range that was closer to a sample other than the chosensample becomes its own region whose sample is the closer sample.Operations then proceed to step 2-15.

At step 2-14, proceeding from step 2-12, the region is split so that thepart of the range that was closer to a sample other than the chosensample becomes part of the region owning that sample. Operations thenreturn to step 2-8.

At step 2-15, proceeding from step 2-13, the “joins in-hand” count isdecremented. Operations then proceed to step 2-8.

The above described methods for selecting samples for the wavetableinstrument are generally performed by the wireless device 210. However,according to an alternate embodiment of the invention, one or more ofthese methods can be performed by the proxy server 100. In thisembodiment, the wireless device 210 provides information pertaining toits available memory to the proxy server 100.

While this invention is primarily discussed as a method, a person ofordinary skill in the art will understand that the apparatus discussedabove with reference to a communications system, a proxy server, acontent server, and a wireless device, may be programmed to enable thepractice of the method of the invention. Moreover, an article ofmanufacture for use with a communications system, such as a pre-recordedstorage device or other similar computer program product having anon-transitory computer readable medium including program instructionsrecorded thereon, may direct the communications system to facilitate thepractice of the method of the invention. It is understood that suchapparatus and articles of manufacture also come within the scope of theinvention.

The embodiments of the invention described above are intended to beexemplary only. The scope of the invention is therefore intended to belimited solely by the scope of the appended claims.

1. A method in a proxy server for providing wavetable information to awireless device from a content server over a wireless network, the proxyserver being adapted to receive communications from and transmitcommunications to the wireless device, the wavetable informationincluding a plurality of sampled notes corresponding to a plurality ofnotes, the method comprising: receiving at the proxy server a requestfrom the wireless device, the request containing a selection of samplednotes usable by a wavetable instrument on the wireless device; receivingat the proxy server the wavetable information from the content server;filtering the wavetable information in accordance with the selection ofsampled notes contained in the request; and transmitting the filteredwavetable information for the wavetable instrument to the wirelessdevice, the filtered wavetable information being a set sampled notesusable by the wavetable instrument.
 2. The method of claim 1, furthercomprising the proxy server receiving a request for metadata for thewavetable information from the wireless device, the metadata includingsample sizes for the sampled notes.
 3. The method of claim 2, furthercomprising, in response to the request for metadata, the proxy servertransmitting the metadata to the wireless device.
 4. The method of claim3, further comprising the proxy server receiving the metadata from thecontent server.
 5. The method of claim 3, further comprising the proxyserver extracting the metadata from the wavetable information.
 6. Themethod of claim 2 wherein the wireless device is adapted for calculatinga desired number of sampled notes for the selection of sampled notesfrom a maximum of the sample sizes and an amount of available memory inthe wireless device.
 7. The method of claim 6 wherein the wirelessdevice is further adapted for determining the selection of sampled notesby forming groups of notes based on spacings between the notes,allocating one of the desired number of sampled notes to each group, andselecting a sampled note for the notes in each group that corresponds toa note at a midpoint of the group to reduce distortion.
 8. A system forfiltering wavetable information from a content server for downloading toa wireless device over a wireless network, the wavetable informationincluding a plurality of sampled notes corresponding to a plurality ofnotes, the system comprising: a proxy server adapted to receivingcommunications from and transmit communications to the wireless device,the server having a processor, the processor being coupled to a memoryand to an interface to the wireless network and adapted for: receivingat the proxy server a request from the wireless device, the requestcontaining a selection of sampled notes usable by a wavetable instrumenton the wireless device; receiving at the proxy server the wavetableinformation from the content server; filtering the wavetable informationin accordance with the selection of sampled notes contained in therequest; and transmitting the filtered wavetable information for thewavetable instrument to the wireless device, the filtered wavetableinformation being a set of sampled notes usable by the wavetableinstrument.
 9. The system of claim 8, wherein the processor is furtheradapted for receiving a request for metadata for the wavetableinformation from the wireless device, the metadata including samplesizes for the sampled notes.
 10. The system of claim 9, wherein theprocessor is further adapted for, in response to the request formetadata, transmitting the metadata to the wireless device.
 11. Thesystem of claim 10, wherein the processor is further adapted forreceiving the metadata from the content server.
 12. The system of claim10, wherein the processor is further adapted for extracting the metadatafrom the wavetable information.
 13. The system of claim 9, wherein thewireless device is adapted for calculating a desired number of samplednotes for the selection of sampled notes from a maximum of the samplesizes and an amount of available memory in the wireless device.
 14. Thesystem of claim 13, wherein the wireless device is further adapted fordetermining the selection of sampled notes by forming groups of notesbased on spacings between the notes, allocating one of the desirednumber of sampled notes to each group, and selecting a sampled note forthe notes in each group that corresponds to a note at a midpoint of thegroup to reduce distortion.
 15. A computer program product having anon-transitory computer readable medium having computer executableprogram instructions recorded thereon for directing a system to filterwavetable information from a content server for downloading to awireless device over a wireless network, the wavetable informationincluding a plurality of sampled notes corresponding to a plurality ofnotes, the computer program product comprising: code for receiving at aproxy server a request from the wireless device, the request containinga selection of sampled notes usable by a wavetable instrument on thewireless device; code for receiving at the proxy server the wavetableinformation from the content server; code for filtering the wavetableinformation in accordance with the selection of sampled notes containedin the request; and code for transmitting the filtered wavetableinformation for the wavetable instrument to the wireless device, thefiltered wavetable information being a set of sampled notes usable bythe wavetable instrument.
 16. The computer program product of claim 15,further comprising code for receiving a request for metadata for thewavetable information from the wireless device, the metadata includingsample sizes for the sampled notes.
 17. The computer program product ofclaim 16, further comprising code for, in response to the request formetadata, transmitting the metadata to the wireless device.
 18. Thecomputer program product of claim 17, further comprising code forreceiving the metadata from the content server.
 19. The computer programproduct of claim 17, further comprising code for extracting the metadatafrom the wavetable information.
 20. The computer program product ofclaim 16 wherein the wireless device is adapted for calculating adesired number of sampled notes for the selection of sampled notes froma maximum of the sample sizes and an amount of available memory in thewireless device.
 21. The computer program product of claim 20 whereinthe wireless device is further adapted for determining the selection ofsampled notes by forming groups of notes based on spacings between thenotes, allocating one of the desired number of sampled notes to eachgroup, and selecting a sampled note for the notes in each group thatcorresponds to a note at a midpoint of the group to reduce distortion.